package java学习.第06章_面向对象编程_基础;

/**
 * ClassName: D1_再谈方法之重载
 * Package: java学习.第06章_面向对象编程_基础
 * Description:
 *
 * @Author 张蛟龙
 * @Create 2023/3/4 20:58
 * @Version 1.0
 */
public class D1_再谈方法之重载 {
    /**
     * 重载
     *  两同一不同
     *      两同：  同一个类，同一个方法
     *      一不同： 参数列表不同
     *                  1.参数个数不同
     *                  2.参数类型不同
     *  方法的重载与 形参的名字、权限修饰符、返回值类型都没有关系，
     *
     *  编译器怎样区分重载的时候使用那个方法？
     *      1.根据方法名
     *      2.按顺序 根据参数列表
     *          （优先类型一样，在判断类型自动提升，
     *          自动转换成容量大的  float(4字节) >long(8字节) int 优先 long
     *          优先类型提升更小的 指的是"范围"）
     *
     */
    public static void main(String[] args) {

        重载的Java的使用小细节();
    }

    private static void 重载的Java的使用小细节() {
        int[] is = new int[]{1,2,3};
        char[] cs = new char[]{'a','b'};
        boolean[] bs = new boolean[]{false,true};
        System.out.println(is);//地址值
        System.out.println(cs);//ab  //因为 println 方法重载 可以实现打印
        System.out.println(bs);//地址值
    }

    private static void 重载的使用() {
        D1_再谈方法之重载 d = new D1_再谈方法之重载();
        d.add(1,'1');
    }

    public void add(int i,byte j){
        System.out.println(i+j);
    }
    public void add(int i,char j){
        System.out.println(i+j);
    }
    public void add(char i,int j){
        System.out.println(i+j);
    }
    public void add(int i,long j){
        System.out.println(i+j);
    }
    public void add(int i,float j){
        System.out.println(i+j);
    }
    public void add(int i,double j){
        System.out.println(i+j);
    }
    public void add(int i,int j,int z){
        System.out.println(i+j+z);
    }


}
